Lookerでパレート図を作ってみた #Looker
Looker勉強中のikumiです。今回は、Lookerでパレート図を作成してみましたので、その手順について記載いたします。
パレート図の作成手順
ユースケース
今回はユーザーのデシル番号毎の売上金額と、その累積の構成比を作成することを想定して進めました。事前に『ユーザーID』と、『ユーザーごとの売上金額』、『デシルNO』の3つカラムを持ったテーブルを用意します。
Viewファイルでディメンション&メジャーを定義
今回以下の通りViewファイルを定義しました。
dimension: user_id { primary_key: yes hidden: yes sql: ${TABLE}.user_id ;; } dimension: decile { label: "デシルNO" type: number sql: ${TABLE}.decile ;; } measure: user_num { label: "顧客数" type: count_distinct sql: ${user_id} ;; } measure: sales_total { type: sum sql: ${TABLE}.sale_price ;; } measure: sales_parcent { type: percent_of_total sql: ${sales_total} ;; } measure: sales_running { type: running_total sql: ${sales_total} ;; }
パレート図を作成するためには最終的にデシル毎の売上合計と、その累積の構成比のカラムが必要になるので、そのために定義していくことになりますが、ここでのポイントはメジャータイプで『percent_of_total』と『running_total』を使用する点です。
前提として、sqlパラメータではWINDOW関数を使用できないので、累積などといった計算もできません。そのためLookerの事前定義されているメジャータイプをうまく使って計算をしていくことにしました。しかし、Lookerの事前定義されているメジャータイプでは累積の構成比を出すことができなかったので、この後のExploreでやや力業で計算することにしました(汗)
- percent_of_total
- 各行の値の、合計値に対する割合を算出
- running_total
- 各行の累計を算出
上記のメジャータイプは、データベース上で計算を行われるのではなくデータが返された後に画面上で計算を行うタイプとなりますので、他のmeasureでは参照できない(参照しても計算が正確ではない)値となりますので注意が必要です。
Exploreでカスタムフィールドを作成
前項で説明した通り、累積の構成比の値についてはカスタムフィールドで何とか作成していきますので、『各行の合計値』と『累積の構成比』の2つを作成します。
- 合計値算出
- 計算式 :
${user_order_facts.sales_total} / ${user_order_facts.sales_parcent}
- 計算式 :
- 累積の構成比
- 計算式:
( ${user_order_facts.sales_running} / ${合計値算出} )/ 100
- フォーマット:割合
- 計算式:
- 実行結果
これでパレート図作成に必要なカラムが揃いました。
Exploreでビジュアライゼーションを作成
最後に、ビジュアライゼーションを整えていきます。
- 縦棒グラフを選択する
-
「編集 > Yタブ」で、累積の構成比を右軸のエリアにドラッグする
- これで、累積の構成比が二軸になりました
- これで、累積の構成比が二軸になりました
- 「系列タブ」で、累積の構成比をLineにする
- この作業でぐっとパレートっぽくなります!
- この作業でぐっとパレートっぽくなります!
- 不要なカラムを選択してグレーアウトにした後、「プロットタブ」で凡例を非表示にします
- 画像では凡例がグレーアウトですが、ここをオンにすると凡例が消えます
- 画像では凡例がグレーアウトですが、ここをオンにすると凡例が消えます
- パレート図の完成!
さいごに
いかがでしたでしょうか。かなりゴリ押しでパレート図を作成してしまいましたね。カスタムフィールドを使用すると、画面で選択されているフィールドしか使えないなど、グラフの表現に制限も出そうなので工夫が必要だと感じました。もう少しよいやり方がないか模索していきたいと思います!